package br.com.seimos.minijava.frame;

import br.com.seimos.minijava.temp.Label;
import br.com.seimos.minijava.temp.Temp;
import br.com.seimos.minijava.tree.Exp;
import br.com.seimos.minijava.tree.ExpList;
import br.com.seimos.minijava.tree.Stm;
import br.com.seimos.minijava.utils.BoolList;

public abstract class Frame {
	public Label name;
	public AccessList formals;

	public abstract Frame newFrame(Label name, BoolList formals);

	public abstract Exp externalCall(String func, ExpList args);

	public abstract Access allocLocal(boolean escape);

	public abstract Temp FP();

	public abstract Temp RV();

	public abstract int wordSize();

	public abstract void procEntryExit1(Stm body);

}
